/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Modelo;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import javax.swing.JOptionPane;
/**
 *
 * @author SAW
 */
public class ProveedorModelo {
ConexionModelo conexion=new ConexionModelo();
	private transient Connection con;
	ResultSet rs;


//linkedlist clase de java para generar listas
//preparedstatement permite prepara el estado recibir la informacion de la base de datos
//rsultset el resultado
 public LinkedList consultaProveedorTabla(String consulta,int tipo)throws SQLException{
    if( !conexion.isConnect() ){
          con=conexion.connect();
           while(!conexion.isConnect()){
                conexion.connect();
           }
     }

     //parametros consulta vendedores, tipo: 1.Cedula 2.Zona 3.Nombre
	LinkedList listaProv=new LinkedList();
	PreparedStatement pstmt=null;
	ResultSet rs=null;
  	try{
            if (consulta.equals(""))
  		pstmt=con.prepareStatement("select * from Proveedores");
            else
                if (tipo==1)
                    pstmt=con.prepareStatement("select * from Proveedores where nit like '%"+ consulta + "%'");//probando
                else if(tipo == 2)
                    pstmt=con.prepareStatement("select * from Proveedores where razonSocial like '%"+ consulta + "%'");//probando
                else
                    pstmt=con.prepareStatement("select * from Proveedores where representanteLegal like '%"+ consulta + "%'");//probando

  		rs=pstmt.executeQuery();
  		while(rs.next()){
  			listaProv.add(Proveedor.load(rs));
  		}

  	}finally{
 		if(rs!=null){
			rs.close();
		}
		if(pstmt!=null){
			pstmt.close();
			pstmt=null;
		}
	}

	return listaProv;
 }

 /**
  * insertar datos a la base de datos
  * @param prov
  * @throws SQLException
  */
 public void setNuevoProveedor(Proveedor prov) throws SQLException {// 
       if( !conexion.isConnect() ){
          con=conexion.connect();
           while(!conexion.isConnect()){
                conexion.connect();
           }
     }

        PreparedStatement pstmt=null;
        try{

                pstmt=con.prepareStatement("insert into Proveedores values(?,?,?,?,?,?)");
                pstmt.setString(1,  prov.getNit());
                pstmt.setString(2,  prov.getRazonSocial());
                pstmt.setString(3,  prov.getDireccion());
		pstmt.setString(4,  prov.getTelefono());
                pstmt.setString(5,  prov.getRepresentanteLegal());
                pstmt.setBoolean(6, prov.isEstado());
		pstmt.executeUpdate();

        }finally{
               if( pstmt!=null )
                  pstmt.close();
        }
    }

 //actualizar donde consulta cedula o codigo y dato es el valor a cambiar
  public void actualizarProveedor(Proveedor prov,String consulta) throws SQLException {// insertar datos a la base de datos
        if( !conexion.isConnect() ){
          con=conexion.connect();
           while(!conexion.isConnect()){
                conexion.connect();
           }
     }

        PreparedStatement pstmt=null;
        try{

                pstmt=con.prepareStatement("update Proveedores set "
                        + "nit='" + prov.getNit() + "',"
                        + "razonSocial='" + prov.getRazonSocial() + "',"
                        + "direccion='" + prov.getDireccion() + "',"
                        + "telefono='" + prov.getTelefono() + "', "
                        + "representanteLegal='" +  prov.getRepresentanteLegal()
                        + " where nit='" + consulta +"'");
		pstmt.executeUpdate();

        }finally{
               if( pstmt!=null )
                  pstmt.close();
        }
    }

  /**
   * consdulta proveedores
   * @param consulta por nit
   * @return
   * @throws SQLException
   */
  public Proveedor consultaProveedor(String consulta) throws SQLException{
      if( !conexion.isConnect() ){
          con=conexion.connect();
           while(!conexion.isConnect()){
                conexion.connect();
           }
     }

      Proveedor proveedor=new Proveedor();
      PreparedStatement pstmt=null;
	ResultSet rs=null;
  	try{
            pstmt=con.prepareStatement("select * from Proveedores where nit='"+ consulta + "'");
            rs=pstmt.executeQuery();

            while(rs.next()){
                proveedor=Proveedor.load(rs);
            }
  	}finally{
 		if(rs!=null){
			rs.close();
		}
		if(pstmt!=null){
			pstmt.close();
			pstmt=null;
		}
	}
        return proveedor;
  }


}
